接口设计的工作流
接口设计是前后端协作的关键环节。良好的接口设计可以减少前后端联调的摩擦,提高开发效率。
接口设计的标准流程
需求分析 → 确定资源 → 定义接口 → 编写文档 → 团队评审 → 开发实现
text
首页项目的接口设计
核心接口列表
| 接口 | 方法 | 路径 | 说明 |
|---|---|---|---|
| 首页数据 | GET | /api/v1/home | 获取首页所有模块数据 |
| 课程列表 | GET | /api/v1/courses | 分页获取课程列表 |
| 课程详情 | GET | /api/v1/courses/:id | 获取单个课程详情 |
| 课程分类 | GET | /api/v1/categories | 获取课程分类树 |
| 搜索 | GET | /api/v1/search | 全文搜索课程 |
| 用户登录 | POST | /api/v1/auth/login | 用户登录 |
| 用户注册 | POST | /api/v1/auth/register | 用户注册 |
接口设计原则
- 版本控制:URL中包含版本号(/api/v1/),方便后续接口升级
- 统一响应格式:所有接口返回相同的JSON结构
- 错误码规范:定义清晰的错误码体系
- 分页标准化:列表接口统一分页参数(page、pageSize)
统一响应格式
interface ApiResponse<T> {
code: number // 业务状态码
message: string // 提示信息
data: T // 业务数据
}
interface PageResponse<T> {
list: T[] // 数据列表
total: number // 总条数
page: number // 当前页码
pageSize: number // 每页条数
}
typescript
接口文档方案对比
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| Swagger/OpenAPI | 标准化,代码自动生成 | 需要写装饰器 | NestJS项目首选 |
| Apifox | 功能全面,国内友好 | 商业产品 | 中小团队 |
| YApi | 开源,支持Mock | 需要自建服务 | 内网环境 |
| Markdown文档 | 简单直接 | 容易过时 | 快速原型 |
NestJS + Swagger方案
NestJS项目中集成Swagger是最佳选择——通过装饰器将接口文档写在代码中,文档和代码始终同步。
@ApiTags('课程')
@Controller('courses')
export class CourseController {
@Get()
@ApiOperation({ summary: '获取课程列表' })
@ApiQuery({ name: 'page', type: Number, required: false })
@ApiQuery({ name: 'pageSize', type: Number, required: false })
findAll(@Query() query: PageDto) {
return this.courseService.findAll(query)
}
}
typescript
启动项目后访问/api-docs即可看到自动生成的可交互API文档。
AI辅助接口设计
AI编程助手在接口设计中可以发挥以下作用:
- 根据业务需求自动生成接口定义和DTO类型
- 辅助编写接口文档的描述信息
- 生成Mock数据用于前端开发
- 根据接口定义生成前端API请求代码
使用通义灵码或GitHub Copilot等工具,通过自然语言描述接口需求,可以快速生成NestJS的Controller、Service和DTO代码骨架。
↑